home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 11 / Cream of the Crop 11-1.iso / program / heatmon.zip / REPORT.CBL < prev   
Text File  |  1995-12-09  |  15KB  |  390 lines

  1. *$nocall,apost,comp-5,smallcomp
  2.  COPY PMCALLS SUPPRESS.
  3.  IDENTIFICATION DIVISION.
  4.  PROGRAM-ID. REPORT.
  5.  ENVIRONMENT DIVISION.
  6.  CONFIGURATION SECTION.
  7.  SOURCE-COMPUTER. IBM-PC.
  8.  OBJECT-COMPUTER. IBM-PC.
  9.  INPUT-OUTPUT SECTION.
  10.  FILE-CONTROL.
  11.  
  12.      SELECT REPORT-FILE ASSIGN TO 'PRN[N]'
  13.          FILE STATUS IS FILE-STATUS.
  14.  
  15.      SELECT DATA-FILE ASSIGN TO 'C:\FURNDAT[t]'
  16.          FILE STATUS IS FILE-STATUS.
  17.  
  18.      SELECT EXCEL-FILE ASSIGN TO 'C:\FURNOUT.DAT[t]'
  19.          FILE STATUS IS FILE-STATUS.
  20.  
  21.  DATA DIVISION.
  22.  FILE SECTION.
  23.  
  24.  FD  REPORT-FILE.
  25.  01  REPORT-REC                        PIC X(80).
  26.  
  27.  FD  DATA-FILE.
  28.  01  DATA-RECORD.
  29.      05  IN-RECORD-ID               PIC X(01).
  30.      05  IN-RECORD-DAYCHAR          PIC X(03).
  31.      05  FILLER                     PIC X(01).
  32.      05  IN-RECORD-MONTH            PIC X(03).
  33.      05  FILLER                     PIC X(01).
  34.      05  IN-RECORD-DAY              PIC 9(02).
  35.      05  FILLER                     PIC X(01).
  36.      05  IN-RECORD-HOUR             PIC 9(02).
  37.      05  FILLER                     PIC X(01).
  38.      05  IN-RECORD-MINUTE           PIC 9(02).
  39.      05  FILLER                     PIC X(01).
  40.      05  IN-RECORD-SECOND           PIC 9(02).
  41.      05  FILLER                     PIC X(01).
  42.      05  IN-RECORD-YEAR             PIC 9(04).
  43.  
  44.  FD  EXCEL-FILE.
  45.  01  EXCEL-RECORD.
  46.      05  EXCEL-HOUR                 PIC 9(02).
  47.      05  FILLER                     PIC X(01).
  48.      05  EXCEL-TOTAL-ON             PIC 9(05).
  49.      05  FILLER                     PIC X(01).
  50.      05  EXCEL-TOTAL-OFF            PIC 9(05).
  51.      05  FILLER                     PIC X(01).
  52.      05  EXCEL-HOUR-COST            PIC 9(02)V99.
  53.  
  54. **************************************************************
  55. **                                                          **
  56. **************************************************************
  57.  WORKING-STORAGE SECTION.
  58.  01  EOF-SW                         PIC X(1) VALUE 'N'.
  59.  01  FILE-STATUS                    PIC X(2).
  60.  01  FIRST-PASS-SW                  PIC X(1) VALUE 'Y'.
  61.  01  HELD-DATA.
  62.      05  WS-HOLD-MONTH              PIC X(03).
  63.      05  WS-HOLD-DAY                PIC 9(02).
  64.      05  WS-HOLD-HOUR               PIC 9(02).
  65.  01  CALCULATION-DATA.
  66.      05  WS-CALC-MINUTES-ON         PIC 9(05).
  67.      05  WS-CALC-SECONDS-ON         PIC 9(05).
  68.      05  WS-CALC-MINUTES-OFF        PIC 9(05).
  69.      05  WS-CALC-SECONDS-OFF        PIC 9(05).
  70.      05  WS-TOTAL-MINUTES-ON        PIC 9(05).
  71.      05  WS-TOTAL-SECONDS-ON        PIC 9(05).
  72.      05  WS-TOTAL-MINUTES-OFF       PIC 9(05).
  73.      05  WS-TOTAL-SECONDS-OFF       PIC 9(05).
  74.      05  WS-CALC-COST               PIC 9(02)V99.
  75.      05  WS-COST-PER-SECOND         PIC 9(02)V99 VALUE 0.
  76.      05  WS-GRAND-TOTAL-ON          PIC 9(05).
  77.      05  WS-GRAND-TOTAL-OFF         PIC 9(05).
  78.  
  79.  01  DATA-RECORD-1.
  80.      05  WS1-RECORD-ID              PIC X(01).
  81.      05  WS1-RECORD-DAYCHAR         PIC X(03).
  82.      05  FILLER                     PIC X(01).
  83.      05  WS1-RECORD-MONTH           PIC X(03).
  84.      05  FILLER                     PIC X(01).
  85.      05  WS1-RECORD-DAY             PIC 9(02).
  86.      05  FILLER                     PIC X(01).
  87.      05  WS1-RECORD-HOUR            PIC 9(02).
  88.      05  FILLER                     PIC X(01).
  89.      05  WS1-RECORD-MINUTE          PIC 9(02).
  90.      05  FILLER                     PIC X(01).
  91.      05  WS1-RECORD-SECOND          PIC 9(02).
  92.      05  FILLER                     PIC X(01).
  93.      05  WS1-RECORD-YEAR            PIC 9(04).
  94.  
  95.  01  DATA-RECORD-2.
  96.      05  WS2-RECORD-ID              PIC X(01).
  97.      05  WS2-RECORD-DAYCHAR         PIC X(03).
  98.      05  FILLER                     PIC X(01).
  99.      05  WS2-RECORD-MONTH           PIC X(03).
  100.      05  FILLER                     PIC X(01).
  101.      05  WS2-RECORD-DAY             PIC 9(02).
  102.      05  FILLER                     PIC X(01).
  103.      05  WS2-RECORD-HOUR            PIC 9(02).
  104.      05  FILLER                     PIC X(01).
  105.      05  WS2-RECORD-MINUTE          PIC 9(02).
  106.      05  FILLER                     PIC X(01).
  107.      05  WS2-RECORD-SECOND          PIC 9(02).
  108.      05  FILLER                     PIC X(01).
  109.      05  WS2-RECORD-YEAR            PIC 9(04).
  110.  
  111.   01 WS-REPORT-HEADING-LINE1.
  112.      05  FILLER                     PIC X(02) VALUE SPACES.
  113.      05  WS-HEADING1-DATE           PIC X(08) VALUE SPACES.
  114.      05  FILLER                     PIC X(50) VALUE SPACES.
  115.  
  116.   01 WS-REPORT-HEADING-LINE2.
  117.      05  FILLER                     PIC X(02) VALUE SPACES.
  118.      05  FILLER                     PIC X(05) VALUE 'HOUR '.
  119.      05  FILLER                     PIC X(10) VALUE SPACES.
  120.      05  FILLER                     PIC X(09) VALUE 'TOTAL ON '.
  121.      05  FILLER                     PIC X(10) VALUE SPACES.
  122.      05  FILLER                     PIC X(10) VALUE 'TOTAL OFF'.
  123.      05  FILLER                     PIC X(10) VALUE SPACES.
  124.      05  FILLER                     PIC X(11) VALUE 'TOTAL COST'.
  125.  
  126.   01 WS-REPORT-HEADING-LINE3.
  127.      05  FILLER                     PIC X(02) VALUE SPACES.
  128.      05  FILLER                     PIC X(05) VALUE '-----'.
  129.      05  FILLER                     PIC X(10) VALUE SPACES.
  130.      05  FILLER                     PIC X(09) VALUE '---------'.
  131.      05  FILLER                     PIC X(10) VALUE SPACES.
  132.      05  FILLER                     PIC X(10) VALUE '---------'.
  133.      05  FILLER                     PIC X(10) VALUE SPACES.
  134.      05  FILLER                     PIC X(11) VALUE '----------'.
  135.  
  136.   01 WS-DETAIL-LINE1.
  137.      05  FILLER                     PIC X(02) VALUE SPACES.
  138.      05  WS-DETAIL-LINE1-HOUR       PIC 9(05) VALUE ZEROS.
  139.      05  FILLER                     PIC X(10) VALUE SPACES.
  140.      05  WS-DETAIL-LINE1-TOT-ON     PIC 9(07) VALUE ZEROS.
  141.      05  FILLER                     PIC X(12) VALUE SPACES.
  142.      05  WS-DETAIL-LINE1-TOT-OFF    PIC 9(07) VALUE ZEROS.
  143.      05  FILLER                     PIC X(13) VALUE SPACES.
  144.      05  WS-DETAIL-LINE1-TOT-COST   PIC 9(08) VALUE ZEROS.
  145.  
  146.   01 WS-DETAIL-LINE2.
  147.      05  FILLER                     PIC X(17) VALUE SPACES.
  148.      05  WS-DETAIL-LINE2-TOT-ON     PIC 9(07) VALUE ZEROS.
  149.      05  FILLER                     PIC X(12) VALUE SPACES.
  150.      05  WS-DETAIL-LINE2-TOT-OFF    PIC 9(07) VALUE ZEROS.
  151.      05  FILLER                     PIC X(13) VALUE SPACES.
  152.      05  WS-DETAIL-LINE2-TOT-COST   PIC 9(08) VALUE ZEROS.
  153.  
  154.   01 WS-DETAIL-LINE3.
  155.      05  FILLER                     PIC X(23)
  156.                VALUE 'AVERAGE ON          =>'.
  157.      05  WS-DETAIL-LINE3-AVG-ON     PIC 9(03) VALUE ZEROS.
  158.  
  159.   01 WS-DETAIL-LINE4.
  160.      05  FILLER                     PIC X(23)
  161.                VALUE 'AVERAGE OFF         =>'.
  162.      05  WS-DETAIL-LINE3-AVG-OFF    PIC 9(03) VALUE ZEROS.
  163.  
  164.   01 WS-DETAIL-LINE5.
  165.      05  FILLER                     PIC X(23)
  166.                VALUE 'AVERAGE INT         =>'.
  167.      05  WS-DETAIL-LINE3-AVG-INT    PIC 9(03) VALUE ZEROS.
  168.  
  169.   01 WS-TOTAL-LINE1.
  170.      05  FILLER                     PIC X(23)
  171.                VALUE 'TOTAL ON TIME DAY   =>'.
  172.      05  WS-TOTAL-LINE1-TOT-ON      PIC 9(03) VALUE ZEROS.
  173.  
  174.   01 WS-TOTAL-LINE2.
  175.      05  FILLER                     PIC X(23)
  176.                VALUE 'TOTAL OFF TIME DAY  =>'.
  177.      05  WS-TOTAL-LINE2-TOT-OFF     PIC 9(03) VALUE ZEROS.
  178.  
  179.   01 WS-TOTAL-LINE3.
  180.      05  FILLER                     PIC X(23)
  181.                VALUE 'TOTAL GALS/COST DAY =>'.
  182.      05  WS-TOTAL-LINE3-GAL-DAY     PIC 9(03) VALUE ZEROS.
  183.      05  FILLER                     PIC X(02) VALUE SPACES.
  184.      05  WS-TOTAL-LINE3-COST-DAY    PIC 9(05)V99 VALUE ZEROS.
  185.  
  186.   01 WS-TOTAL-LINE4.
  187.      05  FILLER                     PIC X(23)
  188.                VALUE 'TOTAL GALS/COST NIGHT>'.
  189.      05  WS-TOTAL-LINE4-GAL-NIGHT   PIC 9(03) VALUE ZEROS.
  190.      05  FILLER                     PIC X(02) VALUE SPACES.
  191.      05  WS-TOTAL-LINE3-COST-NIGHT  PIC 9(05)V99 VALUE ZEROS.
  192.  
  193.   01 WS-WAIT-SW                     PIC X.
  194.  
  195. **************************************************************
  196. **                                                          **
  197. **************************************************************
  198.  
  199.  PROCEDURE DIVISION.
  200.  00000-MAINLINE.
  201.  
  202.       OPEN INPUT  DATA-FILE.
  203.       DISPLAY 'DATA FILE OPEN STATUS=> ' FILE-STATUS.
  204.       OPEN OUTPUT EXCEL-FILE
  205.       DISPLAY 'DATA OUTPUT FILE STATUS => ' FILE-STATUS.
  206.  
  207.       OPEN OUTPUT REPORT-FILE
  208.       MOVE WS-REPORT-HEADING-LINE1 TO REPORT-REC
  209.       WRITE REPORT-REC
  210.       MOVE WS-REPORT-HEADING-LINE2 TO REPORT-REC
  211.       WRITE REPORT-REC
  212.       MOVE WS-REPORT-HEADING-LINE3 TO REPORT-REC
  213.       WRITE REPORT-REC.
  214.  
  215.       PERFORM 100-PROCESS-DATA-FILE THRU
  216.               199-EXIT UNTIL
  217.                 EOF-SW EQUAL TO 'Y'.
  218.       PERFORM PROCESS-OUTPUT-DATA THRU
  219.               PROCESS-OUTPUT-EXIT
  220.  
  221.       MOVE WS-DETAIL-LINE2 TO REPORT-REC
  222.       WRITE REPORT-REC
  223.       MOVE WS-DETAIL-LINE3 TO REPORT-REC
  224.       WRITE REPORT-REC
  225.       MOVE WS-DETAIL-LINE4 TO REPORT-REC
  226.       WRITE REPORT-REC
  227.       MOVE WS-DETAIL-LINE5 TO REPORT-REC
  228.       WRITE REPORT-REC
  229.       MOVE WS-TOTAL-LINE1 TO REPORT-REC
  230.       WRITE REPORT-REC
  231.       MOVE WS-TOTAL-LINE2 TO REPORT-REC
  232.       WRITE REPORT-REC
  233.       MOVE WS-TOTAL-LINE3 TO REPORT-REC
  234.       WRITE REPORT-REC
  235.       MOVE WS-TOTAL-LINE4 TO REPORT-REC
  236.       WRITE REPORT-REC
  237.       CLOSE REPORT-FILE.
  238.  
  239.       DISPLAY 'PROCESSING COMPLETE'.
  240.       CLOSE DATA-FILE
  241.             EXCEL-FILE.
  242.  
  243.       STOP RUN.
  244.  
  245.  00001-END-MAINLINE.
  246.  
  247. **************************************************************
  248. **                                                          **
  249. **************************************************************
  250.  100-PROCESS-DATA-FILE.
  251.  
  252.       READ DATA-FILE
  253.         AT END
  254.           MOVE 'Y' TO EOF-SW
  255.       END-READ.
  256.       MOVE DATA-RECORD TO DATA-RECORD-1
  257.  
  258.      IF FIRST-PASS-SW EQUAL TO 'Y'
  259.         READ DATA-FILE
  260.          AT END
  261.           MOVE 'Y' TO EOF-SW
  262.         END-READ
  263.         MOVE DATA-RECORD TO DATA-RECORD-2
  264.         MOVE 'N' TO FIRST-PASS-SW
  265.      ELSE
  266.         DISPLAY 'WS2-RECORD-ID=> ' WS2-RECORD-ID
  267.         DISPLAY 'WS1-RECORD-ID=> ' WS1-RECORD-ID
  268.         COMPUTE WS-CALC-MINUTES-ON = WS2-RECORD-MINUTE -
  269.                         WS1-RECORD-MINUTE
  270.         COMPUTE WS-CALC-SECONDS-ON = WS2-RECORD-SECOND -
  271.                         WS1-RECORD-SECOND
  272.         COMPUTE WS-TOTAL-MINUTES-ON = WS-TOTAL-MINUTES-ON +
  273.                            WS-CALC-MINUTES-ON
  274.         COMPUTE WS-TOTAL-SECONDS-ON = WS-TOTAL-SECONDS-ON +
  275.                             WS-CALC-SECONDS-ON
  276.         DISPLAY '* COMPUTE CALC ON *'
  277.         DISPLAY 'MINUTES ON->' WS-CALC-MINUTES-ON
  278.         DISPLAY 'DATA2-> ' WS2-RECORD-MINUTE
  279.         DISPLAY 'DATA1-> ' WS1-RECORD-MINUTE
  280.         DISPLAY 'SECONDS ON->' WS-CALC-SECONDS-ON
  281.         DISPLAY 'DATA2-> ' WS2-RECORD-SECOND
  282.         DISPLAY 'DATA1-> ' WS1-RECORD-SECOND
  283.         DISPLAY 'TOTAL MIN ON-> ' WS-TOTAL-MINUTES-ON
  284.         DISPLAY 'TOTAL SEC ON-> ' WS-TOTAL-SECONDS-ON
  285.  
  286.         ACCEPT WS-WAIT-SW
  287.         IF WS-TOTAL-SECONDS-ON > 60
  288.            COMPUTE WS-TOTAL-SECONDS-ON = WS-TOTAL-SECONDS-ON - 60
  289.            COMPUTE WS-TOTAL-MINUTES-ON = WS-TOTAL-MINUTES-ON + 1
  290.         END-IF
  291.         IF EOF-SW = 'Y'
  292.            GO TO 199-EXIT
  293.         END-IF
  294.         READ DATA-FILE
  295.            AT END
  296.           MOVE 'Y' TO EOF-SW
  297.         END-READ
  298.         DISPLAY 'DATA IN=> ' DATA-RECORD
  299.         MOVE DATA-RECORD TO DATA-RECORD-2
  300.      END-IF.
  301.  
  302.      COMPUTE WS-CALC-MINUTES-OFF = WS2-RECORD-MINUTE -
  303.                         WS1-RECORD-MINUTE.
  304.      COMPUTE WS-CALC-SECONDS-OFF = WS2-RECORD-SECOND -
  305.                         WS1-RECORD-SECOND.
  306.      COMPUTE WS-TOTAL-MINUTES-OFF = WS-TOTAL-MINUTES-OFF +
  307.                            WS-CALC-MINUTES-OFF.
  308.      COMPUTE WS-TOTAL-SECONDS-OFF = WS-TOTAL-SECONDS-OFF +
  309.                             WS-CALC-SECONDS-OFF.
  310.  
  311.  
  312.      DISPLAY '* COMPUTE CALC OFF *'
  313.      DISPLAY 'MINUTES OFF->' WS-CALC-MINUTES-OFF
  314.      DISPLAY 'DATA2-> ' WS2-RECORD-MINUTE
  315.      DISPLAY 'DATA1-> ' WS1-RECORD-MINUTE
  316.      DISPLAY 'SECONDS OFF->' WS-CALC-SECONDS-OFF
  317.      DISPLAY 'DATA2-> ' WS2-RECORD-SECOND
  318.      DISPLAY 'DATA1-> ' WS1-RECORD-SECOND
  319.      DISPLAY 'TOTAL MIN OFF-> ' WS-TOTAL-MINUTES-OFF
  320.      DISPLAY 'TOTAL SEC OFF-> ' WS-TOTAL-SECONDS-OFF
  321.  
  322.      DISPLAY 'WS2-RECORD-ID=> ' WS2-RECORD-ID
  323.      DISPLAY 'WS1-RECORD-ID=> ' WS1-RECORD-ID
  324.  
  325.      ACCEPT WS-WAIT-SW
  326.  
  327.      IF WS-TOTAL-SECONDS-OFF > 60
  328.         COMPUTE WS-TOTAL-SECONDS-OFF = WS-TOTAL-SECONDS-OFF - 60
  329.         COMPUTE WS-TOTAL-MINUTES-OFF = WS-TOTAL-MINUTES-OFF + 1
  330.      END-IF.
  331.  
  332.       IF FIRST-PASS-SW EQUAL TO 'Y'
  333.          MOVE WS1-RECORD-MONTH TO WS-HOLD-MONTH
  334.          MOVE WS1-RECORD-DAY   TO WS-HOLD-DAY
  335.          MOVE WS1-RECORD-HOUR  TO WS-HOLD-HOUR
  336.       END-IF.
  337.  
  338.       DISPLAY 'WS-TOTAL-MINUTES ON=> ' WS-TOTAL-MINUTES-ON
  339.       DISPLAY 'WS-TOTAL-MINUTES-OFF=> ' WS-TOTAL-MINUTES-OFF
  340.       ACCEPT WS-WAIT-SW
  341.  
  342.       IF WS-HOLD-HOUR NOT EQUAL TO WS1-RECORD-HOUR
  343.           DISPLAY 'PROCESSING OUTPUT DATA'
  344.  
  345.           PERFORM PROCESS-OUTPUT-DATA THRU
  346.                   PROCESS-OUTPUT-EXIT
  347.           MOVE ZEROS TO WS-CALC-MINUTES-ON
  348.                         WS-CALC-SECONDS-ON
  349.                         WS-CALC-MINUTES-OFF
  350.                         WS-CALC-SECONDS-OFF
  351.                         WS-TOTAL-MINUTES-ON
  352.                         WS-TOTAL-SECONDS-ON
  353.                         WS-TOTAL-MINUTES-OFF
  354.                         WS-TOTAL-SECONDS-OFF
  355.       END-IF.
  356.  
  357.  199-EXIT.
  358.      EXIT.
  359.  
  360. **************************************************************
  361. **                                                          **
  362. **************************************************************
  363.  PROCESS-OUTPUT-DATA.
  364.  
  365.      MOVE WS1-RECORD-HOUR      TO WS-HOLD-HOUR
  366.      MOVE WS-HOLD-HOUR         TO EXCEL-HOUR.
  367.      MOVE WS-TOTAL-MINUTES-ON  TO EXCEL-TOTAL-ON.
  368.      MOVE WS-TOTAL-MINUTES-OFF TO EXCEL-TOTAL-OFF.
  369.      WRITE EXCEL-RECORD.
  370.      MOVE WS-HOLD-HOUR         TO WS-DETAIL-LINE1-HOUR
  371.      MOVE WS-TOTAL-MINUTES-ON  TO WS-DETAIL-LINE1-TOT-ON
  372.      MOVE WS-TOTAL-MINUTES-OFF TO WS-DETAIL-LINE1-TOT-OFF
  373.      MOVE WS-DETAIL-LINE1      TO REPORT-REC
  374.      WRITE REPORT-REC.
  375.  
  376.  PROCESS-OUTPUT-EXIT.
  377.      EXIT.
  378.  
  379. **************************************************************
  380. **                                                          **
  381. **************************************************************
  382.  PROCESS-REPORT.
  383.  
  384.       OPEN OUTPUT REPORT-FILE.
  385.       CLOSE REPORT-FILE.
  386.  
  387.  PROCESS-REPORT-EXIT.
  388.      EXIT.
  389.  
  390.